import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Esta clase hará que los enemigos se muevan y realicen las funciones que se les asigno para atacar al enemigo (exterminador).
 * @author Héctor Nicolás Anguiano Huerta
 * @version 19 de Noviembre de 2012.
 */
public abstract class Zombie extends Actor
{   
    /**
     * Metodo del moviemiento del zombie que va a la izquierda.
     */
    public void mueveZombieizq()
    {
        int x;
        x=getX()-1;
        if(x<=1)
           x=getWorld().getWidth()-1;
        super.setLocation(x,getY());
    }
    
    /**
     * Metodo del movimiento del zombie que va a la derecha.
     */
    public void mueveZombieder()    
    {
        int xx = getX()+1;
        if(xx >= getWorld().getWidth()) 
        {
            xx = 0;
        }
        if(xx < 0) 
        {
            xx = getWorld().getWidth()-1;
        }
        super.setLocation(xx, getY());
    }
    
    /**
     * Metodo que sirve para remover el objeto zombie del escenario.
     */
    public void elimina()
    {
        getWorld().removeObject(this);
    }
    
    /**
     * Metodo que checa si una bala toco a este enemigo.
     */
    public void checaBala()
    {
        Actor bala;
        bala=super.getOneObjectAtOffset(0,0,Bala.class);
        if(bala!=null)
        {
            Zombieland mundo;
            mundo=(Zombieland)super.getWorld();
            elimina();
        }
    }
    
    /**
     * Este metodo abstracto se utiliza en todas las subclases para hacer que los zombies disparen sus respectivas armas.
     */
    public abstract void dispara();
}
